python- pyqt5 一個存疑問題
首先 我的問題是 自定義的方法中 無法給窗體中增加控制元件
我們直接看例子
這是一個圖書管理系統的視窗
我們給他加上選單(menuBar) 加上工具欄(QAction) 程式變成了這樣
這個介面是這樣的(我不習慣把圖片放在專案原始碼的目錄裡 看我匯入的目錄 是../image我存在了上一級的單獨的一個image資料夾裡)
我只這麼匯入了一個圖書查詢.jpg 其他的先不管 所以只顯示這一個圖片
然後我們此時在初始化的函式 initUI 裡 我們加一個label
我們跑一下程式
確實 label被移動到了 400 ,500這個位置
我們對按鈕的點選事件設定一下 如果點選了這個圖書查詢按鈕 我們讓這個label移動到 200,250這個位置
我們點選按鈕之後
誠然 label移動了
但是 如果我們想按一下這個按鈕就生成label 然後label移動到想去的位置呢
這樣理論上也是可以的吧
在我們點選之後
誠然 函式可以呼叫 因為print語句生效了
可是label呢?
也就是說 在自定義的方法裡 無法生成窗體的控制元件麼
那麼我們如果想要點選這個按鈕之後
下方會生成一些表格 來顯示一些圖書資訊 這也是不可以的了
這到底是因為什麼?因為有了選單欄和工具欄麼?
先來看一個例子
from PyQt5.QtWidgets import * import sys class Window(QWidget):def __init__(self): QWidget.__init__(self) self.resize(900, 600) self.button = QPushButton('Click me',self) self.button.move(400,500) # self.button.setFlat(True) self.button.clicked.connect(self.on_button_clicked) def on_button_clicked(self): print("The button was pressed!") self.button.setText("wow") app = QApplication(sys.argv) screen = Window() screen.show() sys.exit(app.exec_())
是可行的
我們直接加了button
現在我們加個label
這個程式是可以跑的 沒有佈局也是可以跑的 因為move了位置
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): QWidget.__init__(self) self.resize(900, 600) self.button = QPushButton('Click me',self) self.button.move(400,500) # self.button.setFlat(True) self.button.clicked.connect(self.on_button_clicked) self.label1 = QLabel("標籤",self) self.label1.move(300,200) def on_button_clicked(self): print("The button was pressed!") self.button.setText("wow") app = QApplication(sys.argv) screen = Window() screen.show() sys.exit(app.exec_())
我們現在改改程式碼 讓這個button點選時 生成一個label
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): QWidget.__init__(self) self.resize(900, 600) self.button = QPushButton('Click me',self) self.button.move(400,500) # self.button.setFlat(True) self.button.clicked.connect(self.on_button_clicked) def on_button_clicked(self): print("The button was pressed!") self.button.setText("wow") self.label1 = QLabel("標籤", self) self.label1.move(300, 200) app = QApplication(sys.argv) screen = Window() screen.show() sys.exit(app.exec_())
可見啊 這個自定義的點選方法 是不會生成新的窗體控制元件的
那麼如果想通過按鈕的點選來增加控制元件 對於pyqt5 是否是不可行的?
這個問題我至今也沒明白
因為那個self 就是 window
他們都是window啊
就不可能是因為self的問題 是物件與類之間的關係我們搞混了 這不可能啊
所以得出結論 想設計這麼一個 點選按鈕生成新控制元件的程式 貌似真的不可行
我希望此問題可以解決