Я написал следующий код, однако мой код изображения работает для одной страницы, а не для следующей, также я не могу правильно выровнять его.Может кто-то помочь мне, пожалуйста?Мое главное окно - root, в котором работает код изображения, а comp - второе окно, в котором его нет.
Кроме того, выравнивания не правильны, и я не знаю почему.Я пробовал атрибут place, но в некоторых местах он выдает ошибку non return type object is non callable
.
import tkinter as tk # use these imports so you do not overwrite other imports.
import tkinter.ttk as ttk # use these imports so you do not overwrite other imports.
import tkinter.messagebox as messagebox # avoid import *. Its normally not needed.
from db import DBConnect
from listComp import ListComp
from datetime import date
import time
from PIL import ImageTk,Image
conn = DBConnect()
def complaint(master):
comp = tk.Toplevel(master)
comp.geometry('1366x768')
comp.title('Complaint Box')
comp.configure(background='#333')
style = ttk.Style()
style.theme_use('classic')
# background image
bard = Image.open("flag.jpg")
background_image = ImageTk.PhotoImage(bard)
background_label = ttk.Label(comp, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
tkvar = tk.StringVar(master)
tkvar.set('')
area_var = tk.StringVar(master)
area_var.set('')
labels = ['Full Name:','Age:','Gender:','Email_id:', 'Choose a Category:','Already Registered Ever Before:', 'Issue in Short(Up to 300 Words):']
choices = {'Student', 'Teacher', 'Management', 'Infrastructure'}
choices1 = {"Andra Pradesh","Arunachal Pradesh",
"Assam Bihar","Chhattisgarh", "Gujarat",
"Haryana", "Himachal Pradesh", "Jammu and Kashmir",
"Jharkhand", "Karnataka", "Kerala", "Madya Pradesh",
"Maharashtra", "Manipur", "Meghalaya", "Mizoram",
"Nagaland", "Orissa", "Punjab", "Rajasthan",
"Sikkim", "Tamil Nadu", "Telagana", "Tripura", "Uttar Pradesh", "West Bengal"}
for elem in ['TLabel', 'TButton', 'TRadiobutton']: # fixed typo
style.configure(elem, background='#35a5e1')
for i in range(7):
ttk.Label(comp, text=labels[i]).grid(row=i, column=0, padx=200, pady=25)
popup_menu = tk.OptionMenu(comp, tkvar, *choices)
popup_menu.grid(row=4, column=1, columnspan=2)
tkvar.trace('w', lambda: change_dropdown(tkvar)) # corrected your trace command.
popup_menu1 = tk.OptionMenu(comp, area_var, *choices1)
popup_menu1.grid(row=1, column=3, columnspan=1)
tkvar.trace('w', lambda: change_dropdown1(area_var))
fullname = tk.Entry(comp, text='', width=40, font=('Arial', 14))
fullname.grid(row=0, column=1, columnspan=2)
age = tk.Entry(comp,text='',width=5,font=('Arial',14))
age.grid(row=1,column=1)
ttk.Label(comp, text="Area:").grid(row=1, column=2, padx=200, pady=25)
span_gender = tk.StringVar(master)
ttk.Radiobutton(comp, text='Male', value='male', variable=span_gender).grid(row=2, column=1)
ttk.Radiobutton(comp, text='Female', value='female', variable=span_gender).grid(row=2, column=2)
email_id = tk.Entry(comp, text='', width=40, font=('Arial', 14))
email_id.grid(row=3, column=1, columnspan=2)
pre_complaint = tk.StringVar(master)
ttk.Radiobutton(comp, text='Yes', value='Yes', variable=pre_complaint).grid(row=5, column=1)
ttk.Radiobutton(comp, text='No', value='No', variable=pre_complaint).grid(row=5, column=2)
comment = tk.Text(comp, width=35, height=5, font=('Arial', 14))
comment.grid(row=6, column=1, columnspan=2, padx=10, pady=10)
ttk.Button(comp, text='List Comp.', command=show_list).grid(row=7, column=1, pady=25)
ttk.Button(comp, text='Submit Now', command=lambda: save_data(fullname,age, span_gender,
email_id,tkvar, pre_complaint,comment)).grid(row=7, column=2, pady=25)
def change_dropdown(tkvar):
print(tkvar.get())
def change_dropdown1(area_var):
print(area_var.get())
def save_data(fullname,age, span_gender,email_id, tkvar,pre_complaint,comment):
msg1 = "Failed please fill all information!."
if len(fullname.get()) == 0 or len(span_gender.get()) == 0:
messagebox.showinfo(title='Add Info', message=msg1)
else:
msg = conn.Add(fullname.get(),age.get(), span_gender.get(),
email_id.get(),tkvar.get(), pre_complaint.get(),comment.get(1.0, 'end-1c'))
messagebox.showinfo(title='Add Info', message=msg)
# you should probably close the connection here.
def show_list():
# cannot test this function as I do not know what `ListComp()` is doing.
# That said this function is currently pointless as the local variable
# will be basically deleted when the function finishes.
listrequest = ListComp()
def tick():
time_string = time.strftime("%H:%M:%S")
clock.config(text=time_string)
#clock['text'] = time
clock.after(200, tick) # run itself again after 200 ms
root = tk.Tk()
root.geometry('1366x768')
root.title('Complaint Box')
root.configure(background='#333')
style = ttk.Style()
style.theme_use('classic')
# background image
bard = Image.open("flag.jpg")
background_image = ImageTk.PhotoImage(bard)
background_label = ttk.Label(root, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
for elem in ['TLabel', 'TButton']:
style.configure(elem, background='#35a5e1')
t1 = ttk.Label(root, text="Welcome To Indian Government Complaint Department",
font="Verdana 24 bold").grid(row=0, column=0, padx=198, pady=10)
clock = tk.Label(root,font = ("times",30,"bold"),bg="RED")
clock.grid(row=0,column=0,sticky="ne")
clock.place(x=1210,y=10)
tick()
today = date.today()
print(today)
date = tk.Label(root,font = ("times",30,"bold"),bg="RED")
date.grid(row=0,column=0,sticky="nw",pady=10)
date.config(text=today)
ttk.Button(root, text='Register A Complaint', command=lambda: complaint(root)).grid(row=5, pady=175, padx=10)
ttk.Button(root, text='View Complaint', command=show_list).grid(row=7, pady=40, padx=0)
root.mainloop()