我仍然是python和我正在编写的应用程序的新手我真的想保持窗口打开并在选择OK时更改标签的文本。文本存储在配置文件中,这不是问题。我可以将它带入列表或字典。我只是不确定按下按钮时如何循环显示文本。我可以得到第一个和最后一个文本。我只是失去了实现这一目标的最佳流程或逻辑。
我已经生成了应用程序是tkinter,但也无法在那里实现此功能。我现在正在使用PyQt,因为它的限制较少。
代码看起来像这样:
import configparser
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
import random
appGlobal = {'dialogCount':0}
class GameDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
layout = QGridLayout(self)
lblWBS = QLabel("lblWBS")
lblDialog = QLabel("lblDialog")
btnOK = QPushButton("OK")
layout.addWidget(btnOK, 5, 1)
lblDialog = QLabel()
layout.addWidget(lblWBS, 0, 1)
layout.addWidget(lblDialog, 1, 1)
def npcDialog():
lblDialog.setText(message[appGlobal['dialogCount']])
layout.removeWidget(lblDialog)
layout.addWidget(lblDialog, 1, 1)
appGlobal['dialogCount'] =+ 1
npcDialog()
btnOK.clicked.connect(npcDialog)
self.setWindowTitle("PALCDMS")
def kickoffMeeting():
kickoff_meeting = config['kickoffDialog']
global message
message = []
for name in kickoff_meeting:
string_value = config.get('kickoffDialog', name)
message.append(string_value)
app = QApplication(sys.argv)
dialog = GameDialog()
dialog.show()
app.exec_()
kickoffMeeting()
答案 0 :(得分:0)
您可以遵循的最简单的方法是简单地使用QPushButton,将其点击与您执行行为的函数相连接即可。我尽可能简单地得到了一些例子,看看它是否有意义。
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QPushButton
import random
class Label(QLabel):
def __init__(self):
super(Label, self).__init__()
self.letters = ['q','w','e','r','t','y']
self.h_layout = QHBoxLayout()
self.setLayout(self.h_layout)
self.label = QLabel('Random letters: _')
self.btn = QPushButton("Roll")
self.btn.clicked.connect(self.change_label)
self.h_layout.addWidget(self.label)
self.h_layout.addWidget(self.btn)
def change_label(self):
if len(self.letters)>0:
self.label.setText(self.letters.pop(0))
if __name__=="__main__":
app = QApplication(sys.argv)
main_label = Label()
main_label.show()
sys.exit(app.exec_())
我认为你最大的问题是你的缩进。不知道你有多新的python,但你发布的代码似乎有一个非常奇怪的缩进。我有一些问题需要理解你的逻辑。