2015-06-24 105 views
0

我試圖通過編輯其源文件(在Python 3.4.2,Windows 8.1下)來即時更改程序的行爲。我的程序是一個tkinter圖形用戶界面,其中有一個按鈕可以將兩個值相加,但我希望能夠更改按鈕的行爲。我目前正試圖通過編輯源文件(改變,比如說,除了減法),保存它,然後單擊其回調函數import作爲源文件的按鈕。我希望我的代碼更改反映在正在運行的GUI中,而不必退出並重新啓動程序。我也希望這import只重新編譯我更改的行,而不是整個文件。程序運行時更改源文件

程序,reload0.py

import time 
import serial 
import sys 
import os 
import tkinter as tk 
from tkinter import ttk 
from tkinter import * 
from tkinter import messagebox 
from tkinter import filedialog 
try: 
    import Tkinter    # Python 2 
    import ttk 
except ImportError: 
    import tkinter as Tkinter # Python 3 
    import tkinter.ttk as ttk 
mGui = Tk() 
mGui.title("GUI") 
mGui.geometry('400x200+100+100') 
def mOp(): 
    num1 = value1.get() 
    num2 = value2.get() 
    Op=num1+num2 
    name1.set('Sum') 
    name2.set(Op) 
def mReLoad(): 
    import reload0.py 
    mGui.update() 
def mCheck(): 
    if len(name1.get()) == 0: 
    name1.set('name1') 
    mGui.update() 
    if (len(name2.get()) == 0): 
    name2.set('name2') 
    mGui.update() 
    try: 
     print(value1.get()) 
    except ValueError: 
     value1.set(0) 
     mGui.update() 
    try: 
     print(value2.get()) 
    except ValueError as ValE: 
     value2.set(0) 
     mGui.update() 
     print(ValE) 

value1 = DoubleVar() 
value2 = DoubleVar() 
name1 = StringVar() 
name2 = StringVar() 
mButtonSave = Button(mGui, text = "Operation", command = mOp, fg = 'Red').place(x=150,y=80) 
mButtonLoad = Button(mGui, text = "ReLoad Operation", command = mReLoad, fg = 'Red').place(x=150,y=110) 
mButtonLoad = Button(mGui, text = "Check", command = mCheck, fg = 'Red').place(x=150,y=140) 
tText1 = Entry(mGui, textvariable = name1).place(x=10,y=80) 
tText2 = Entry(mGui, textvariable = name2).place(x=10,y=100) 
vText1 = Entry(mGui, textvariable = value1).place(x=10,y=120) 
vText2 = Entry(mGui, textvariable = value2).place(x=10,y=140) 
+0

我建議避免使用術語'reload',它在python中具有特定的含義,很大程度上不受支持。改爲使用'refresh'。 – o11c

+3

Python不會讓你修改你的源文件,然後在運行中再次「導入」它們。如果你刪除了一個類定義或什麼的話會怎麼樣?口譯員會如何處理這類剩餘物品?無論你試圖用這個做什麼,我保證它是一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – TigerhawkT3

+0

此外,您的代碼僅包含「except」塊(未附加到「try」塊,不一致的縮進和非[PEP8](https://www.python.org/dev/peps/pep-0008/)格式) 。 – TigerhawkT3

回答

0

對於不斷變化的按鈕功能的目的有不是改變源代碼簡單的方法,並且評論說這是不可能的。

從我看到你的另一個問題來看,你對python編程很陌生。我會建議花一些時間在一些基本的教程中首先了解python和一些編程概念。

例如

import reload.py 

應該簡單地

import reload 

https://wiki.python.org/moin/BeginnersGuide/NonProgrammers

讀一本書,做了一些例子,這樣的話,你將成爲一個在這裏回答問題,好運氣!

相關問題