2017-05-24 69 views
1

我對Python和我正在編寫的應用程序還很新,我非常希望保持窗口打開並在選擇OK時更改標籤的文本。文本存儲在配置文件中,這不是問題。我可以把它列入清單或詞典。當按下按鈕時,我不確定如何在文本中循環。我可以得到第一個和最後一個文本。我只是失去了實現這一目標的最佳過程或邏輯。PyQt和動態標籤

我生成的應用程序是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

什麼是config ['kickoffDialog']' – eyllanesc

+0

使用configparser,它在config(textfile)中查找包含要顯示的文本的'kickoff'部分。 – cybermohr

回答

-1

你可以按照最簡單的方法是有一個簡單的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新,但你發佈的代碼似乎有一個非常奇怪的縮進。我有一些問題需要理解你的邏輯。

+0

對不起,我可能搞砸了將代碼帶入堆棧溢出的縮進。我會看看。謝謝。 – cybermohr

+0

如果它不正確嘗試使用我試圖做我認爲你問的代碼,看看它是否工作,如果它確實如何可以應用到你的例子「) – yurisnm

+0

我已經適應了這個我的代碼,大部分,唯一的問題是,我將如何在沒有隨機的情況下移動該列表?我想從左到右遍歷列表到最後 – cybermohr