PyQt5,彈窗,自定義輸入對話方塊

2021-09-12 02:17:25 字數 3736 閱讀 3664

環境:pyqt5 + pycharm + python3.5

在qt designer裡新建乙個dialog的型別(不能是main window,只能有乙個)

新建之後隨意新增一些控制項接收使用者輸入

之後儲存,會把這個dialog存成乙個單獨的.ui檔案。前面一直在main window 裡找這個部分找了半天,真傻。

使用pyuic把.ui檔案轉換為.py檔案後是這樣

from pyqt5 import qtcore, qtgui, qtwidgets

class ui_dialog(object):

def setupui(self, dialog):

dialog.setobjectname("dialog")

dialog.resize(400, 327)

self.buttonbox = qtwidgets.qdialogbuttonbox(dialog)

self.buttonbox.setgeometry(qtcore.qrect(30, 240, 341, 32))

self.buttonbox.setorientation(qtcore.qt.horizontal)

self.buttonbox.setstandardbuttons(qtwidgets.qdialogbuttonbox.cancel|qtwidgets.qdialogbuttonbox.ok)

self.buttonbox.setobjectname("buttonbox")

self.label = qtwidgets.qlabel(dialog)

self.label.setgeometry(qtcore.qrect(40, 40, 54, 12))

self.label.setobjectname("label")

self.label_2 = qtwidgets.qlabel(dialog)

self.label_2.setgeometry(qtcore.qrect(40, 90, 54, 12))

self.label_2.setobjectname("label_2")

self.label_3 = qtwidgets.qlabel(dialog)

self.label_3.setgeometry(qtcore.qrect(40, 150, 54, 12))

self.label_3.setobjectname("label_3")

self.label_4 = qtwidgets.qlabel(dialog)

self.label_4.setgeometry(qtcore.qrect(40, 130, 54, 12))

self.label_4.settext("")

self.label_4.setobjectname("label_4")

self.lineedit = qtwidgets.qlineedit(dialog)

self.lineedit.setgeometry(qtcore.qrect(80, 40, 113, 20))

self.lineedit.setobjectname("lineedit")

self.lineedit_2 = qtwidgets.qlineedit(dialog)

self.lineedit_2.setgeometry(qtcore.qrect(80, 90, 113, 20))

self.lineedit_2.setobjectname("lineedit_2")

self.lineedit_3 = qtwidgets.qlineedit(dialog)

self.lineedit_3.setgeometry(qtcore.qrect(80, 150, 113, 20))

self.lineedit_3.setobjectname("lineedit_3")

self.toolbutton = qtwidgets.qtoolbutton(dialog)

self.toolbutton.setgeometry(qtcore.qrect(220, 90, 37, 18))

self.toolbutton.setobjectname("toolbutton")

self.toolbutton_2 = qtwidgets.qtoolbutton(dialog)

self.toolbutton_2.setgeometry(qtcore.qrect(220, 150, 37, 18))

self.toolbutton_2.setobjectname("toolbutton_2")

self.retranslateui(dialog)

self.buttonbox.accepted.connect(dialog.accept)

self.buttonbox.rejected.connect(dialog.reject)

qtcore.qmetaobject.connectslotsbyname(dialog)

def retranslateui(self, dialog):

dialog.setwindowtitle(_translate("dialog", "使用者資訊輸入"))

self.label.settext(_translate("dialog", "姓名"))

self.label_2.settext(_translate("dialog", "身高"))

self.label_3.settext(_translate("dialog", "體重"))

self.toolbutton.settext(_translate("dialog", "..."))

self.toolbutton_2.settext(_translate("dialog", "..."))

因為這個檔案只是在mainwindow裡呼叫,所以也就不新增 if __name__ =='__main__'了

之後回到主程式裡面,新增乙個button,用這個按鈕來觸發彈窗。並import dialog.py

self.pushbutton_2.clicked.connect(self.show_dialog)
類內寫槽函式

def show_dialog(self):

self.di = qdialog()

d = dialog.ui_dialog()

d.setupui(self.di)

self.di.show()

qt designer 自動生成的類繼承自object,沒有show方法,所以需要生成乙個qdialog物件來過載我們自己又生成的ui_dialog

注意:是對qdialog物件show(),並不是自己生成的ui_dialog物件 show(),開始沒有寫self.di,彈窗總是一閃而過,類的的函式加上self之後成功。

和mainwindow的顯示函式乙個路子

if __name__ == '__main__':

mainwindow = qmainwindow()

ui = ui_mainwindow()

ui.setupui(mainwindow)

mainwindow.show()

PyQt5 自定義對話方塊呼叫

目錄 1.概況 2.模態對話方塊 2.1 模態對話方塊滿足的條件 2.2 模態對話方塊的呼叫 3.非模態對話方塊 3.1 對話方塊設定條件 3.2 對話方塊呼叫 desc 自定義命令執行 from pyqt5.qtwidgets import qdialog from customcommand i...

PyQt5 對話方塊 預定義對話方塊 19

學習 pyqt4入門指南 pdf中文版.pdf 筆記 qinputdialog輸入對話方塊 qinputdialog提供了一種獲取使用者單值資料的簡潔形式。它接受的資料有字串,數字和列表的一項資料等。本示例包含乙個按鈕和乙個行編輯部件。單擊按鈕會彈出輸入對話方塊,以獲取使用者輸入的文字資料。該文字資...

PyQt5 對話方塊

from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import import sys class sdialog qwidget def init self,parent none super sdialog,...