2017-04-21 47 views
2

私の質問は パッケージからラベル(または他のグラフィック要素)を変更するにはどうすればいいですか? アイデアは私のメインプログラムを明るくすることです。 ありがとう!PyQt:パッケージからラベルテキストを変更する方法

EXメインプログラム:

#../mainprogram.py 
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from PyQt5 import QtWidgets 
from ui import Ui_MainWindow 
from package import update 

class MainWindow(QtWidgets.QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

     # label from .ui -> .py 
     self.ui.label_1.setText("need to change this") 

    def update_label(self): 
     self.update = update.label_update() 

EXパッケージ:

#../package/update.py 
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

def label_update(): 
    self.ui.label_1.setText("no problem") 

答えて

1

あなたが行う必要がありますどのような機能に至るまで、オブジェクトのインスタンスを渡すことです。考えてみましょう:このスコープで

def label_update(): 
    self.ui.label_1.setText("no problem") 

、我々はそれが定義されていないので、selfが何であるかを知りません。あなたはselfを通過する場合は、:

#../mainprogram.py 
class MainWindow(QtWidgets.QMainWindow): 
    def update_label(self): 
     self.update = update.label_update(self) 


#../package/update.py 
def label_update(obj): #obj is the object self 
    obj.ui.label_1.setText("no problem") 

私たちは、関数に渡されたオブジェクトを更新しています。

+0

素晴らしい作品です。ありがとうございます! 私の場合、ピックスマップを緑から赤に変える上記の手順を保存する必要があります。 これはメインプログラムを軽くする最善の方法ですか? – cheetOos

関連する問題