我已经尝试了stackoverflow 中的几个示例,但不幸的是对我不起作用。
我只想获取 Tkinter、Python 选定的 checkButton 的值。
我有一个 CheckButton 列表,如下所示
## csv file has rows like
# 101, apple
# 102, orange
for row in csvReader:
checkButton = Checkbutton(top, text = row[1], variable = StringVar(),
onvalue = row[0], offvalue = "0", height=2, \
width = 0, justify=Tkinter.LEFT)
checkButton.pack()
checkBoxList.append(checkButton)
Run Code Online (Sandbox Code Playgroud)
单击表单中的按钮时,这里是需要获取复选框的选中值的回调。
def btnStartCallBack():
for chkBox in checkBoxList:
print chkBox.variable().get()
# also tried below
# print chkBox.get()
# print chkBox.var()
# print chkBox.onvalue.get()
Run Code Online (Sandbox Code Playgroud)
它返回:
AttributeError: Checkbutton instance has no attribute …Run Code Online (Sandbox Code Playgroud) 在我的 GUI 代码中,我尝试通过单击一个按钮来同时运行循环 1 和循环 2。因此,我曾经Thread实现过这一点。但我也尝试通过单击另一个按钮来阻止它,但失败了。在stackoverflow上搜索后,我发现没有直接杀死 的方法Thread。这是代码的一部分:
def loop1():
while True:
call (["raspivid -n -op 150 -w 640 -h 480 -b 2666666.67 -t 5000 -o test.mp4"],shell=True)
call (["raspivid -n -op 150 -w 640 -h 480 -b 2666666.67 -t 5000 -o test1.mp4"],shell=True)
def loop2():
while True:
call (["arecord -D plughw:1 --duration=5 -f cd -vv rectest.wav"],shell=True)
call (["arecord -D plughw:1 --duration=5 -f cd -vv rectest1.wav"],shell=True)
def combine():
Thread(target = loop1).start()
Thread(target = loop2).start()
def stop():
Thread(target = loop1).terminate() …Run Code Online (Sandbox Code Playgroud) 我一直在开发一个简单的程序,可以让按钮输出一些东西。但是当我运行它时,这个
(顺便说一句,我从互联网上得到这个)没有出现。是代码有问题还是什么?请帮助我,以便出现上面的窗口:)
代码:
from Tkinter import *
def asdf():
print('test')
tk = Tk()
b = Button(tk, text="test", command=asdf)
b.pack()
Run Code Online (Sandbox Code Playgroud) 是否可以仅从顶部而不是底部填充小部件?pady 命令总是会双向添加像素...:\
这是一个例子:
from tkinter import ttk, Tk
root = Tk()
frame = ttk.Frame(root)
label1 = ttk.Label(frame, text="Label 1")
label2 = ttk.Label(frame, text="Label 2")
entry = ttk.Entry(frame)
frame.grid(column=0,row=0)
label1.grid(column=0,row=0)
label2.grid(column=0,row=1,pady=15) ## I would like to pad this only from the top
entry.grid(column=0,row=2)
Run Code Online (Sandbox Code Playgroud)
提前致谢!!
我设法让我的 tkinter 应用程序在文本字段上显示文本。
我通过硬编码 COM 端口和波特率来做到这一点,然后在我的程序开始时设置一个串行对象。
baudRate = 9600
ser = serial.Serial('COM16', baudRate)
Run Code Online (Sandbox Code Playgroud)
然后我所有的代码都在之后运行。
但问题是一切都是硬编码的。我希望用户能够从下拉列表中选择 COM 端口。当他选择一个端口时,串行通信应该开始。
所以我就是这样构建的。这是我的相关代码。
#hardcoded baud rate
baudRate = 9600
# this is the global variable that will hold the serial object value
ser = 0 #initial value. will change at 'on_select()'
#this function populates the dropdown on frame1, with all the serial ports of the system
def serial_ports():
return serial.tools.list_ports.comports()
#when the user selects one serial port from the dropdown, this function will execute
def …Run Code Online (Sandbox Code Playgroud) 我如何在 tkinter 中创建选项字段?例如,在 html 中是这样的:
<select>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用一个简单的 gui,它在同一个窗口中使用“秘密号码”/密钥标识符对消息进行加密和解密以获得乐趣。到目前为止,它有效,我对它非常满意。我唯一的问题是我在 crypt() 函数中得到了我想要的输出返回,然后是 {}。使用普通的 print() 函数,我没有这个问题。但是,使用 GUI 确实如此。我想这是包 tkinter 这样做吗?
我的代码:
from tkinter import *
import tkinter.messagebox
def crypt():
so = int(nu1.get())
inp = str(nu2.get().upper())
old_dic = {chr(i): i * (int(so)+int(so))for i in range(ord("A"), ord("A") + 26)}
if len(inp) >= 1:
bit = list(inp)
spell = list(map(old_dic.get, bit))
spell = spell[::-1]
ans1 = (*spell, "")
blank4.insert(0, ans1)
else:
print("Improper input.")
main = Tk()
Label(main, text = "Enter secret number:").grid(row=0)
Label(main, text = "Cryptify:").grid(row=1)
Label(main, text = "Encrypted output:").grid(row=2)
Button(main, …Run Code Online (Sandbox Code Playgroud) 我试图在 python 中使用 tkinter 创建一个库:
import tkinter as tk
class Screen():
def make_window(self, width: int=None, height: int=None, title: str=None) -> int:
self.width = width
self.height = height
self.title = title
new_window = tk.Tk()
if width or height is not None:
new_window.geometry(width + "x" + height)
win = Screen()
win.make_window()
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
import tkinter as tk
class Screen():
def make_window(self, width: int=None, height: int=None, title: str=None) -> int:
self.width = width
self.height = height
self.title = title
global new_window
new_window = …Run Code Online (Sandbox Code Playgroud) 我对 python 编程很陌生,我试图创建一个倒数计时器。我为计时器写下了以下代码,但它不起作用。你能帮忙找出错误在哪里吗?(我在这个网站上做了一些研究,发现了一些与计时器有关的问题。事实上,大部分代码都是根据另一个答案编写的,但我对其进行了一些更改,因为该代码用于时钟,我正在尝试做一个计时器。)
from tkinter import *
from tkinter import messagebox
class alarmclock():
def __init__(self):
self.alarm = Tk()
self.l0 = Label(self.alarm, text = '----------- Alarm clock 1 -----------')
self.l1 = Label(self.alarm, text = 'Please type in the time:')
self.e0 = Entry(self.alarm)
self.l2 = Label(self.alarm)
self.b0 = Button(self.alarm, text = 'Start countdown', command = lambda: self.timer)
self.l0.grid(row = 0, column = 0, columnspan = 2)
self.l1.grid(row = 1, column = 0, padx = 10, pady =5)
self.e0.grid(row = 1, column = …Run Code Online (Sandbox Code Playgroud) tkinter ×10
python ×8
python-3.x ×2
border ×1
canvas ×1
option ×1
padding ×1
pyserial ×1
python-2.7 ×1
raspberry-pi ×1
serial-port ×1
text ×1
tk-toolkit ×1
window ×1