Возникают проблемы с отображением всей информации, введенной в GUI с python - PullRequest
0 голосов
/ 17 октября 2019

Я создаю GUI, который имеет два разных типа при вводе информации. Один из них - флажок, а другой - поле ввода. Я хочу, чтобы кнопка показа отображала оба входа, но я не могу заставить ее работать одной кнопкой. Я могу изменить это, чтобы показать один или другой. Я не уверен, что я делаю неправильно, чтобы оба входа отображались с одной и той же кнопки. Вот код, который у меня есть. Прямо сейчас будет отображаться информация о поле ввода, а не флажок

import tkinter as tk
from tkinter import *


def show_entry_fields():
    print("First Name: %s\nLast Name: %s\nPhone Number: %s"% (e1.get(),e2.get(), e3.get()))


master = tk.Tk()
master.title("Personal Info")
Label(master, text="Your gender:").grid(row=0,column=0, sticky=W)


var1 = IntVar()
Checkbutton(master, text="male", variable=var1).grid(row=0, column=1, sticky=W)
var2 = IntVar()
Checkbutton(master, text="female", variable=var2).grid(row=0, column = 2, sticky=W)
tk.Label(master, text="First Name").grid(row=1, pady=3)
tk.Label(master, text="Last Name").grid(row=2, pady=3)
tk.Label(master, text="Phone Number").grid(row=3, pady=3)


e1 = tk.Entry(master)
e2 = tk.Entry(master)
e3 = tk.Entry(master)


e1.grid(row=1, column=1, pady=3)
e2.grid(row=2, column=1, pady=3)
e3.grid(row=3, column=1, pady=3)


tk.Button(master, text='Quit', fg="red", command=master.quit).grid(row=4,column=0, sticky=tk.E, pady=10)
tk.Button(master, text='Show', fg="blue", command=show_entry_fields).grid(row=4, column=1, sticky=tk.W, padx=50, pady=10)

tk.mainloop()

1 Ответ

0 голосов
/ 18 октября 2019

, если вы хотите получить только один выход (мужской или женский), который является здесь логикой с гендерным вводом ... тогда вы должны использовать RadioButton, а не CheckButton

, чтобы ваш код был похожчто:

import tkinter as tk
from tkinter import *


def show_entry_fields():
    print("First Name: %s\nLast Name: %s\nPhone Number: %s\n gender: %s"% (e1.get(),e2.get(), e3.get(), var1.get()))


master = tk.Tk()
master.title("Personal Info")
Label(master, text="Your gender:").grid(row=0,column=0, sticky=W)


var1 = StringVar()
Radiobutton(master, text="male", variable=var1, value="male").grid(row=0, column=1, sticky=W)
Radiobutton(master, text="female", variable=var1, value="female").grid(row=0, column = 2, sticky=W)
tk.Label(master, text="First Name").grid(row=1, pady=3)
tk.Label(master, text="Last Name").grid(row=2, pady=3)
tk.Label(master, text="Phone Number").grid(row=3, pady=3)


e1 = tk.Entry(master)
e2 = tk.Entry(master)
e3 = tk.Entry(master)


e1.grid(row=1, column=1, pady=3)
e2.grid(row=2, column=1, pady=3)
e3.grid(row=3, column=1, pady=3)


tk.Button(master, text='Quit', fg="red", command=master.quit).grid(row=4,column=0, sticky=tk.E, pady=10)
tk.Button(master, text='Show', fg="blue", command=show_entry_fields).grid(row=4, column=1, sticky=tk.W, padx=50, pady=10)

tk.mainloop()

но, скажем, у вас есть список опций, например предпочтительные языки, и вы хотите получить вывод того, что именно выбирает пользователь .. в этом случае вы должны использовать ListBox

все, что вам нужно знать о ListBox здесь

...