python tkinter 从选定的单选按钮获取文本值

问题描述 投票:0回答:0

我有一个单选按钮,供用户选择。在每次选择时,它都会为 Entry 小部件提供一些文本。 现在,我想从

selected
单选按钮获取文本值。我记得复选框有真值或假值,但我在我的项目中使用了单选按钮。 屏幕

我需要知道,选择了哪个单选按钮,如果用户更改了输入小部件上的文本,那么我想相应地更改文本消息变量。

这是我的代码

from tkinter import  ttk
from tkinter import *

import yagmail

root=Tk()
root.title('send bunch of inquiry emails')
#frame entry for search and button
frameUpper=Frame(master=root,borderwidth=3,relief='flat',padx=12,pady=12)
frameUpper.grid(row=0,column=0,sticky=(E,W))
#frame for text to send via email
frameBtm=Frame(master=root,borderwidth=3,relief='groove',padx=12,pady=12,width=200,height=100)
frameBtm.grid(row=1,column=0,sticky=(N,S,E,W))

frm_emails=ttk.Frame(master=root,padding=3,borderwidth=3,width=300,relief='sunken')

var_inp=StringVar()
lbl_search=Label(master=frameUpper,text='enter search keyword:')
entry_search=Entry(master=frameUpper,width=33,textvariable=var_inp,relief='groove')

#text editor
txt_greetings='Hi,'
search_variable='keyword'
txt_body=f'I would like to have price information for {search_variable} for our company located in Azerbaijan'
txt_regards='Kind regards,'
btn_radio=StringVar()
btn_radio_greeting=ttk.Radiobutton(master=frameBtm,text='Greetings',variable=btn_radio,value=txt_greetings)
btn_radio_body=ttk.Radiobutton(master=frameBtm,text='Body',variable=btn_radio,value=txt_body)
btn_radio_regards=ttk.Radiobutton(master=frameBtm,text='Regards',variable=btn_radio,value=txt_regards)
lbl_text_message=Label(master=frameBtm,text='text message for email')
entry_msg_txt=StringVar()
entry_text=Entry(master=frameBtm,textvariable=entry_msg_txt,borderwidth=1,width=20)

def func_x():
    frm_emails.grid(row=2,sticky=(S,E,W))
    Label(master=frm_emails, text=no_duplicates,wraplength=200).pack()

lbl_search.grid(sticky=(E,W))
entry_search.grid(sticky=(E,W))
entry_search.bind('<Return>', start_scraping)
Button(master=frameUpper, width=13, command=start_scraping, text='run').grid(pady=5)

btn_radio_greeting.grid(row=1,column=0,sticky=(W,))
btn_radio_body.grid(row=2,column=0,sticky=(W,))
btn_radio_regards.grid(row=3,column=0,sticky=(W,))

btn_radio_greeting.bind('<Double-1>',change_value_btn_greetings)
btn_radio_body.bind('<Double-1>',change_value_btn_body)
btn_radio_regards.bind('<Double-1>',change_value_btn_regards)

lbl_text_message.grid(row=0,column=0,rowspan=1,columnspan=1,sticky=(W))
entry_text.grid(row=1,column=1,rowspan=3,columnspan=3,sticky=(N,S,E,W))

root.columnconfigure(0,weight=1)
root.rowconfigure(1,weight=1)

frameUpper.columnconfigure(0,weight=1)

frameBtm.columnconfigure(0,weight=1)
frameBtm.rowconfigure(0,weight=1)
frameBtm.columnconfigure(1,weight=5)
frameBtm.rowconfigure(1,weight=5)
lbl_text_message.rowconfigure(0,weight=1)
lbl_text_message.columnconfigure(0,weight=1)
entry_text.rowconfigure(1,weight=5)
entry_text.columnconfigure(1,weight=5)

frm_emails.rowconfigure(0,weight=1)
frm_emails.columnconfigure(0,weight=1)

# send emails
txt_message_to_send=txt_greetings+'\n'+txt_body+'\n'+txt_regards

if __name__=='__main__':
    root.mainloop()

我能够将 frameBottom 中的子元素作为列表获取,但不知道,如何知道实际上选择了哪个单选按钮?

a=[x for x in frameBtm.winfo_children()]
print(a)
[<tkinter.ttk.Radiobutton object .!frame2.!radiobutton>, <tkinter.ttk.Radiobutton object .!frame2.!radiobutton2>, <tkinter.ttk.Radiobutton object .!frame2.!radiobutton3>, <tkinter.Label object .!frame2.!label>, <tkinter.Entry object .!frame2.!entry>]
python tkinter radio-button
© www.soinside.com 2019 - 2024. All rights reserved.