簡體   English   中英

通過按下按鈕添加按鈕(帶變量) - tkinter

[英]Adding button (with variables) by pressing button - tkinter

我正在制作一個銷售點系統並嘗試實現一個按鈕,當按下一個新按鈕時,還會出現一個 window,它要求用戶輸入一個項目

def newButton ():
    w = Toplevel()
    w.title("New Item") #creates new window when button is pressed
    w.geometry("200x200")
    
    itemNameLabel = Label(w, font=("arial", 15), text="What is the item called?")
    itemNameLabel.grid(row=0, padx=5)
    itemName = Entry(w, width=18,  borderwidth=5)
    itemName.grid(row=1, padx=5)
    newItemName = itemName.get

    itemPriceLabel = Label(w, font=("arial", 15), text="What is the item's price?")
    itemPriceLabel.grid(row=4, padx=5)
    itemPrice = Entry(w, width=18,  borderwidth=5)
    itemPrice.grid(row=5, padx=5)

    def item6_Button():
        global item6_qty
        item6_price = itemPrice.get
        item6_text = newItemName
        item6_qty += 1
        item6_text = (item6_text + "    "+str(item6_price) +"    "+ str(item6_qty)) #concatonates text & variable
        item6.config(text=item6_text) #updates label text - doesn't add multiple 
        item6.pack()

        item6_Button = Button(itemFrame, text=newItemName, width=10, height=5, command=item6_Button)
        item6_Button.grid(row=7, column=1, padx=5)
        item6 = Label(receiptFrame)
    w.mainloop()


newButton= Button(itemFrame, text="Add New Button", width=20, height=5, command=newButton) #creates button for new window
newButton.place(x=480, y=600)
newButton = Label(itemFrame)

*item6_qty 和 item6_price 在程序開頭附近聲明

這是我到目前為止所擁有的,盡管出現了 window,但我認為變量實際上並未設置,位於項目框架中出現的新按鈕之上。 我不完全確定如何 go 關於這個 - 我需要 use.insert 變量嗎?

這是我創建普通按鈕的標准代碼

#Item1 Button + Function
def item1_Button():
    global item1_qty #making qty variable global so it can used
    item1_text = ("Chips")
    item1_qty += 1 #increments qty variable by one everytime button is clicked
    item1_text = (item1_text + "    "+str(item1_price) +"    "+ str(item1_qty)) #concatonates text & variable
    item1.config(text=item1_text) #updates label text - doesn't add multiple 
    item1.pack() #places label within the frame
    
    
item1_Button = Button(itemFrame, text="Chips", width=10, height=5, command=item1_Button)
#creates button + links to function
item1_Button.grid(row=4, column=1, padx=5) #positions button
item1 = Label(receiptFrame)#creates label for button

所需產品

我不確定我是否提供了足夠的代碼來說明我所做的事情,以便更好地了解我正在努力實現的目標,但我知道大塊代碼並不是很受歡迎

這是您可以做什么的示例(這有幫助嗎?):

from tkinter import Tk, Button, Entry, Toplevel


class MainWindow(Tk):
    def __init__(self):
        Tk.__init__(self)

        self.geometry('100x150')

        self.btn = Button(self, text='Create New!', command=self.ask)
        self.btn.pack()

    def ask(self):
        ask_window = InputWindow(self)
        ask_window.focus_force()
    
    def create(self, text):
        button = Button(self, text=text)
        button.pack()
    

class InputWindow(Toplevel):
    def __init__(self, parent):
        Toplevel.__init__(self, parent)
        self.parent = parent
        self.bind('<FocusOut>', self.destroy_)

        self.user_input = Entry(self)
        self.user_input.pack()
        
        self.submit_btn = Button(self, text='Submit!', command=self.retrieve)
        self.submit_btn.pack()
        
    def retrieve(self):
        text = self.user_input.get()
        self.parent.create(text)
        self.destroy()

    def destroy_(self, event):
        if isinstance(event.widget, Toplevel):
            self.destroy()
        

root = MainWindow()
root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM