Python版本3.7
PySide2 Version: 5.14.1
官方文檔:http://doc.qt.io/qtforpython/index.html
先看一個(gè)小程序
from PySide2.QtWidgets import QPushButton, QApplication
app = QApplication()
button = QPushButton(u'按鈕')
button.show()
app.exec_()
運(yùn)行起來(lái)沒(méi)有什么問(wèn)題虽另。
再看另一個(gè)
from PySide2.QtWidgets import QPushButton, QApplication, QWidget
app = QApplication()
window = QWidget()
button = QPushButton('按鈕')
window.show()
app.exec_()
運(yùn)行起來(lái)好像蝴簇,也沒(méi)什么問(wèn)題禀晓,不過(guò)button不見(jiàn)了祠锣,這里其實(shí)是想把button放在window里面嘱根,跟隨window一起顯示的网梢,但是并沒(méi)有履澳。原因就在于button沒(méi)有指定它的父對(duì)象,所以button不知道它應(yīng)該在哪里哭廉,所以也不會(huì)主動(dòng)顯示脊僚,當(dāng)然,我們可以強(qiáng)行讓它顯示遵绰。如下:
from PySide2.QtWidgets import QPushButton, QApplication, QWidget
app = QApplication()
window = QWidget()
button = QPushButton('按鈕')
button.show()
window.show()
app.exec_()
button沒(méi)有顯示在window里面吃挑,而是以一個(gè)窗口顯示的。原因在于在生成button對(duì)象時(shí)街立,沒(méi)有告訴button的父對(duì)象是誰(shuí),改下代碼埠通。
from PySide2.QtWidgets import QPushButton, QApplication, QWidget
app = QApplication()
window = QWidget()
button = QPushButton('按鈕', window)
window.show()
app.exec_()
button = QPushButton('按鈕', window)
作用是告訴window赎离,button是window兒子,然后在window顯示時(shí)端辱,就會(huì)帶上button梁剔。
再看另一個(gè)例子
from PySide2.QtWidgets import QPushButton, QApplication, QWidget, QVBoxLayout
app = QApplication()
window = QWidget()
button = QPushButton('按鈕')
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
app.exec_()
layout = QVBoxLayout()
這里創(chuàng)建一個(gè)布局對(duì)象
window.setLayout(layout)
然后window加載這個(gè)布局對(duì)象
注意button并沒(méi)有指定父對(duì)象噢,但還是正常顯示了舞蔽。原因在于button被放進(jìn)了layout里面荣病,受layout進(jìn)行管理,而layout又被window設(shè)置為當(dāng)前布局渗柿,所以button又被間接放在了window上个盆。
有時(shí)候可能出現(xiàn)控件不顯示或者控件顯示有問(wèn)題就需要檢測(cè)下是不是這些細(xì)節(jié)上沒(méi)有考慮到脖岛,這也是我之前沒(méi)有仔細(xì)想過(guò)的一些問(wèn)題。