我的目標是提示用戶輸入特定內容的GUI窗口。我需要用戶打開公司徽標.jpg,測試設置的圖片和2個.csv數據文件。然後我希望他們輸入報告的名稱和一些測試設置。PyQt4 - 信號和插槽。將按鈕連接到方法時遇到問題
我最初的刺傷成功地生成了一個彈出式窗口,每個項目都有一個按鈕。由於我對每個按鈕有不同的要求,因此我決定返回並單獨執行每個信號/插槽組合。我希望能夠導入圖片和數據並將這些內容分配給變量名稱。不幸的是,在這個當前配置中,我得到的最接近的是它彈出一個窗口,在這個窗口中用戶需要選擇一個文件,然後用按鈕顯示另一個窗口....這不起作用。
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import * #yes, I know I did this above.
from PyQt4.QtCore import * #However, when I only do the first one, I get errors. Same with the second way.
class CompiledWindow(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
def logo_pic(self):
global Logo_picture
Logo_picture = unicode(QFileDialog.getOpenFileName())
self.setWindowTitle('Reasonably named window')
names = ['Open Logo Picture', 'Open Setup Picture', 'Open first data file', 'Open second data file', 'Enter text about settings', 'Enter other text about settings', 'Enter third setting', 'Enter fourth setting']
#this should give you an idea of how many items I need buttons for. I need to open 4 files and have the user enter several bits of text.
grid = QtGui.QGridLayout()
Logo_button = QtGui.QPushButton(names[0])
self.connect(Logo_button, QtCore.SIGNAL('clicked()'), QtCore.SLOT(logo_pic(self)))
grid.addWidget(Logo_button, 0, 0)
self.setLayout(grid)
app = QtGui.QApplication(sys.argv)
cw = CompiledWindow()
cw.show()
sys.exit(app.exec_())
這裏是工作的修復: - 移動高清logo_pic出初始化 的 - 改變時隙/信號以 Logo_button = QtGui.QPushButton(名稱[0]) Logo_button.clicked。連接(self.logo_pic)
嘗試'self.Logo_button.clicked.connect(self.logo_pic)'並使'logo_pic'成爲實例方法。應該在py3中工作,不知道py2。 – Hyperboreus
什麼是實例方法?我使用2.7。 – mauve
從'def __init__'中取出'def logo_pic(self)'並將它放在同一級別。 – Hyperboreus