python tkinter,怎么把从文本框里面获得的内容赋值给一个新的变量
from tkinter import *root=Tk()
Label(root,text="分类数:").grid(row=0,column=0)
Label(root,text="依次输入几个分类高斯分布均值,方差:").grid(row=1,column=0)
v1=StringVar()
v2=StringVar()
e1=Entry(root,textvariable=v1)
e2=Entry(root,textvariable=v2)
e1.grid(row=0,column=1,padx=5,pady=5)
e2.grid(row=1,column=1,padx=5,pady=5)
global num
global variables
def get_variables():
num= e1.get() #获取文本框内容
variables = e2.get()
print(num)
print(variables)
Button(root,text="确认",width=10,command= get_variables)\
.grid(row=2,column=2,sticky=W,padx=10,pady=10)
Button(root,text="退出",width=10,command=root.quit)\
.grid(row=3,column=2,sticky=E,padx=10,pady=10)
print(num)
print(variables)
mainloop()
先在全局创建 num 和 variables 变量,然后在函数内将文本框内容赋值时候用 global 声明即可
参考代码(下面线程部分可以删除,只是为了证明 数据成功被赋值而已):
from tkinter import *
root = Tk()
Label(root, text="分类数:").grid(row=0, column=0)
Label(root, text="依次输入几个分类高斯分布均值,方差:").grid(row=1, column=0)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(root, textvariable=v1)
e2 = Entry(root, textvariable=v2)
e1.grid(row=0, column=1, padx=5, pady=5)
e2.grid(row=1, column=1, padx=5, pady=5)
num,variables = None,None
def get_variables():
global num,variables
num = e1.get()# 获取文本框内容
variables = e2.get()
Button(root, text="确认", width=10, command=get_variables) \
.grid(row=2, column=2, sticky=W, padx=10, pady=10)
Button(root, text="退出", width=10, command=root.quit) \
.grid(row=3, column=2, sticky=E, padx=10, pady=10)
# ---------- 测试数值是否被赋值线程打印 ----------------------------
from threading import Thread
from time import sleep
def func():
while True:
sleep(1)
print('num:',num)
print('variables:',variables)
thread1 = Thread(target=func)
thread1.start()
# -------------------------------------------------------------
mainloop()
Twilight6 发表于 2020-11-11 22:20
先在全局创建 num 和 variables 变量,然后在函数内将文本框内容赋值时候用 global 声明即可
参考代 ...
您可能没明白我的意思,我是希望在程序最后能打印出来我输入文本框的值
您修改之后的程序,还是不能打印
from tkinter import *
root = Tk()
Label(root, text="分类数:").grid(row=0, column=0)
Label(root, text="依次输入几个分类高斯分布均值,方差:").grid(row=1, column=0)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(root, textvariable=v1)
e2 = Entry(root, textvariable=v2)
e1.grid(row=0, column=1, padx=5, pady=5)
e2.grid(row=1, column=1, padx=5, pady=5)
num,variables = None,None
def get_variables():
global num,variables
num = e1.get()# 获取文本框内容
variables = e2.get()
Button(root, text="确认", width=10, command=get_variables) \
.grid(row=2, column=2, sticky=W, padx=10, pady=10)
Button(root, text="退出", width=10, command=root.quit) \
.grid(row=3, column=2, sticky=E, padx=10, pady=10)
print(num)
print(variables)
mainloop()
猪猪虾 发表于 2020-11-11 22:41
您可能没明白我的意思,我是希望在程序最后能打印出来我输入文本框的值
您修改之后的程序,还是不能打印 ...
你没理解 Python 代码执行机制吧
Python 代码是一行一行执行代码的,而当你执行到窗口弹出时候,代码已经将你的
print(num)
print(variables)
执行完毕了,也就是代码在前面已经执行完毕,所以你如果需要后续打印出 num,variables 的值需要多线程
或者通过一个按钮来激活函数执行打印
Twilight6 发表于 2020-11-11 22:44
你没理解 Python 代码执行机制吧
Python 代码是一行一行执行代码的,而当你执行到窗口弹出时候, ...
这个点我确实不知道,我写这个gui的目的是希望获得用户的输入,然后后续会基于获得的输入来进行一些运算,如果我这样字写不行,那有什么方法能达到这个目的呢 猪猪虾 发表于 2020-11-11 22:41
您可能没明白我的意思,我是希望在程序最后能打印出来我输入文本框的值
您修改之后的程序,还是不能打印 ...
通过组件来打印 num 和 variables 的值(输入后需要先按确定,使得 num、variables 赋值),参考代码:
from tkinter import *
root = Tk()
Label(root, text="分类数:").grid(row=0, column=0)
Label(root, text="依次输入几个分类高斯分布均值,方差:").grid(row=1, column=0)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(root, textvariable=v1)
e2 = Entry(root, textvariable=v2)
e1.grid(row=0, column=1, padx=5, pady=5)
e2.grid(row=1, column=1, padx=5, pady=5)
num,variables = None,None
def get_variables():
global num,variables
num = e1.get()# 获取文本框内容
variables = e2.get()
Button(root, text="确认", width=10, command=get_variables) \
.grid(row=2, column=2, sticky=W, padx=10, pady=10)
Button(root, text="退出", width=10, command=root.quit) \
.grid(row=3, column=2, sticky=E, padx=10, pady=10)
def print_value():
print(num)
print(variables)
Button(root, text="打印", width=10, command=print_value) \
.grid(row=2, column=1, sticky=E, padx=10, pady=10)
mainloop() 猪猪虾 发表于 2020-11-11 22:47
这个点我确实不知道,我写这个gui的目的是希望获得用户的输入,然后后续会基于获得的输入来进行一些运算 ...
获得用户输入目标已经达成了,前几个代码都能将文本框的内容赋值到你需要赋值的变量上去哈 Twilight6 发表于 2020-11-11 22:51
获得用户输入目标已经达成了,前几个代码都能将文本框的内容赋值到你需要赋值的变量上去哈
赋值不了啊,我确实能打印了,我希望两个返回值能给到str1,str2
from tkinter import *
def GUI():
root = Tk()
Label(root, text="分类数:").grid(row=0, column=0)
Label(root, text="依次输入几个分类高斯分布均值,方差:").grid(row=1, column=0)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(root, textvariable=v1)
e2 = Entry(root, textvariable=v2)
e1.grid(row=0, column=1, padx=5, pady=5)
e2.grid(row=1, column=1, padx=5, pady=5)
num,variables = None,None
def get_variables():
global num,variables
num = e1.get()# 获取文本框内容
variables = e2.get()
Button(root, text="确认", width=10, command=get_variables) \
.grid(row=2, column=2, sticky=W, padx=10, pady=10)
Button(root, text="退出", width=10, command=root.quit) \
.grid(row=3, column=2, sticky=E, padx=10, pady=10)
def print_value():
print(num)
print(variables)
Button(root, text="打印", width=10, command=print_value) \
.grid(row=2, column=1, sticky=E, padx=10, pady=10)
return v1.get(),v2.get()
str1 ,str2 = GUI()
letter = []
for char in (str1):
if char != ' ':
letter.append(int(str1))
else:
letter.append('*')
factors =
value = []
number = 0
begin = 0
for i in range(len(letter)):
for k in range(begin ,len(factors)):
if letter != '*':
number= number + letter * factors
else:
value.append(number)
number = 0
begin = 0
mainloop()
页:
[1]