3
這是很難描述我想在這裏做,所以這裏就是我想:彈出,非模式,在線對話框中PyQt的
- 點擊一個按鈕,「彈出」的對話框。
- 但是,該對話框應該是非模態的。
- 我也喜歡它與父應用程序「鎖定」,所以如果我移動它,它也會隨之而來。
看起來我似乎或多或少都在試圖描述一個內聯彈出窗口,但我不確定這是它的名稱,還是我應該如何解決這個問題。所以,PyQt大師,你會如何做出這樣的事情?提前致謝。
這是很難描述我想在這裏做,所以這裏就是我想:彈出,非模式,在線對話框中PyQt的
- 點擊一個按鈕,「彈出」的對話框。
- 但是,該對話框應該是非模態的。
- 我也喜歡它與父應用程序「鎖定」,所以如果我移動它,它也會隨之而來。
看起來我似乎或多或少都在試圖描述一個內聯彈出窗口,但我不確定這是它的名稱,還是我應該如何解決這個問題。所以,PyQt大師,你會如何做出這樣的事情?提前致謝。
要獲得無模式對話框,請使用show()而不是exec_()將其打開。
爲確保對話框「與父應用程序鎖定」,請在對話框的構造函數中設置父窗口。
from PyQt4 import QtGui
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
button = QtGui.QPushButton('Open Dialog', self)
button.clicked.connect(self.handleOpenDialog)
self.resize(300, 200)
self._dialog = None
def handleOpenDialog(self):
if self._dialog is None:
self._dialog = QtGui.QDialog(self)
self._dialog.resize(200, 100)
self._dialog.show()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
是否必須是對話框?您可以在主窗口上使用一個按鈕顯示/隱藏小部件。在某些GUI中,有點像「顯示更多」內容。 – Avaris
我想這可能需要一些幻想,但我懷疑這可能會做我最終想要的。 – Cryptite
@ ekhumoro的回答解決了除「鎖定」外的所有問題。我從來沒有見過這樣的事情實施,但我想你可以,如果你想,鉤到孩子的移動事件,並移動父母與它......雖然這將是奇怪的。有沒有一個你見過的通用應用程序,你試圖效仿? –