я хочу выровнять свой код в идеальном порядке виджетов, чтобы интерфейс выглядел аккуратно и чисто - PullRequest
0 голосов
/ 10 июля 2019

Мне нужен аккуратный и чистый интерфейс для моей программы, он работает хорошо, но интерфейс ужасно плох. Может кто-нибудь помочь мне это исправить?

Я пытаюсь использовать сетку и место, но из-за недостатка знаний Python. Я не могу это сделать.

#wap to demonstrate use of check button
import tkinter
from tkinter import messagebox
def pd():
    if (var1.get())==1:
        l1.config(text="You Have Selected Pendrive")
    elif (var1.get())==0:
        l1.config(text="")
def mcard():
    if (var2.get())==1:
        l2.config(text="You Have Selected Memory card")
    elif (var2.get())==0:
        l2.config(text="")
def hdd():
    if (var3.get())==1:
        l3.config(text="You Have Selected HDD")
    elif (var3.get())==0:
        l3.config(text="")
def per():
    print("Successfully compiled")
    msgbox=tkinter.messagebox.askquestion("Closing program","Are you sure?",)
    if msgbox=="yes":
        win.destroy()
    else:
        tkinter.messagebox.showinfo('Return','You will now return to the application screen')
win=tkinter.Tk()
var1=tkinter.IntVar()
var2=tkinter.IntVar()
var3=tkinter.IntVar()
win.geometry("500x500+0+0")
cb1=tkinter.Checkbutton(text="Pendrive",height=2,width=15,variable=var1,font=5,cursor="dot",bg="grey",anchor="w",command=pd)
cb2=tkinter.Checkbutton(text="Memory Card",height=2,width=15,variable=var2,font=5,cursor="dot",bg="grey",anchor="w",command=mcard)
cb3=tkinter.Checkbutton(text="HDD",height=2,width=15,variable=var3,font=5,cursor="dot",bg="grey",anchor="w",command=hdd)
b1=tkinter.Button(text="Submit",height=2,width=15,command=per)
# from this line problem begins with UI.
l1=tkinter.Label(height=2,width=30)
l2=tkinter.Label(height=2,width=30)
l3=tkinter.Label(height=2,width=30)
cb1.grid(column=0,row=1)
cb2.grid(column=0,row=2)
cb3.grid(column=0,row=3)
l1.place(x=40,y=300)
l2.place(x=40,y=350)
l3.place(x=40,y=400)
b1.place(x=125,y=450)

win.mainloop()

Фактические результаты отличаются от ожидаемых. виджеты плохо выровнены (я хочу, чтобы они находились по центру), и между ними недостаточно отступов (должно быть достаточно места, чтобы он не выглядел грязно).

1 Ответ

0 голосов
/ 13 июля 2019

Если вы хотите лучшего выравнивания, то не используйте width, height, place(), но pack() и grid() и его параметры.Если вы используете неправильную опцию в pack(), grid(), вы увидите сообщение об ошибке со всеми доступными опциями для pack или grid.pack и grid используют разные параметры.

Подробнее в документации: place () , pack () , grid ()

enter image description here

import tkinter as tk
from tkinter import messagebox

def pd():
    if var1.get():
        l1.config(text="You Have Selected Pendrive")
    else:
        l1.config(text="")

def mcard():
    if var2.get():
        l2.config(text="You Have Selected Memory card")
    else:
        l2.config(text="")

def hdd():
    if var3.get():
        l3.config(text="You Have Selected HDD")
    else:
        l3.config(text="")

def per():
    print("Successfully compiled")
    msgbox = messagebox.askquestion("Closing program","Are you sure?",)
    if msgbox == "yes":
        win.destroy()
    else:
        messagebox.showinfo('Return', 'You will now return to the application screen')


win = tk.Tk()
win.geometry("500x500+0+0")

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

cb1 = tk.Checkbutton(win, text="Pendrive", variable=var1, font=5, cursor="dot", bg="grey", anchor="w", command=pd)
cb2 = tk.Checkbutton(win, text="Memory Card", variable=var2, font=5, cursor="dot",bg="grey", anchor="w", command=mcard)
cb3 = tk.Checkbutton(win, text="HDD", variable=var3, font=5, cursor="dot", bg="grey", anchor="w", command=hdd)
cb1.pack(ipadx=10, ipady=10, fill='both', expand=True)
cb2.pack(ipadx=10, ipady=10, fill='both', expand=True)
cb3.pack(ipadx=10, ipady=10, fill='both', expand=True)

l1 = tk.Label(win, background='#bbbbbb')
l2 = tk.Label(win, background='#cccccc')
l3 = tk.Label(win, background='#bbbbbb')
l1.pack(ipadx=10, ipady=10, fill='both', expand=True)
l2.pack(ipadx=10, ipady=10, fill='both', expand=True)
l3.pack(ipadx=10, ipady=10, fill='both', expand=True)

b1 = tk.Button(win, text="Submit", command=per)
b1.pack(side='bottom', ipadx=10, ipady=10, fill='both', expand=True)


win.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...