Как назначить кнопку в TkInter моему скрипту? - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в python, и этот сайт, и у меня есть вопрос.


#App design below
import tkinter as tk

Height = 700
Width = 800

def test_function(entry):
    print("This is the entry:", entry)

root = tk.Tk()

canvas = tk.Canvas(root, height=Height, width=Width)
canvas.pack()

frame = tk.Frame(root, bg='black')
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.1, anchor='n')

entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)

button = tk.Button(frame, text="Random Click!", font=40, command=lambda: test_function(entry.get()))
button.place(relx=0.7, relheight=1, relwidth=0.3)

lower_frame = tk.Frame(root, bg='#80c1ff', bd=10)
lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight=0.6, anchor='n')

label = tk.Label(lower_frame)
label.place(relwidth=1, relheight=1)

root.mainloop
#Work below
import random
min = 1
max = 6

roll_again = "yes"

while roll_again == "yes" or roll_again == "y" or roll_again == " y" or roll_again == "Yes" or roll_again == " yes" or roll_again == " Y":
    print ("Rolling the dices...")
    print ("The values are....")
    val_a = (random.randint(min, max))
    val_b = (random.randint(min, max))
    print(val_a)
    print(val_b)
    total = val_a + val_b
    print("The total amount added up is " + str(total))
    roll_again = input("Roll the dices again?")

while roll_again == "no" or roll_again == "n" or roll_again == " n" or roll_again == "No" or roll_again == " no" or roll_again == " N":
    coin_flip = input("Do you want to flip a coin then?")
    while coin_flip == "yes" or coin_flip == "Yes" or coin_flip == " yes" or coin_flip == " Yes" or coin_flip == "y" or coin_flip == "Y" or coin_flip == " y" or coin_flip == " Y":
        print("Flipping coin...")
        print("You got...")
        coinfliplist = ["Heads", "Tails"]
        print(random.choice(coinfliplist))
        coin_flip = input("Do you want to flip again?")
    while coin_flip == "no" or coin_flip == "n":
            exit()

Я смотрел небольшое видео о том, как сделать приложение на python, и до некоторой степени следил за ним, но теперь мне нужна помощь, потому что я не получаю видео. Я хочу назначить кнопку для выполнения всего, что находится ниже комментария #work below, и записи, которая будет использоваться для ввода Y или N. Может ли кто-нибудь помочь мне с тем, как бы я go об этом? Спасибо!

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Во-первых, вам нужно перевести 'root .mainl oop () "в конец кода. Обратите внимание, что вы забыли добавить скобки после root .mainl oop (). Проверьте свой код, пожалуйста.

Если вы хотите, чтобы ваша кнопка выполняла все, что находится ниже вашего комментария, тогда вам нужно определить этот конкретный фрагмент внутри функции, а затем установить команду кнопки для этой функции. Но вы должны определить функцию до определения вашей кнопки. Это должно выглядеть примерно так:

def arbitrary_function_name():
    #Put all the code below your comment in here. Don't forget to indent.

button = tk.Button(frame, text="Random Click!", font=40, command=arbitrary_function_name) #Remember, don't put the parentheses after the function name in the command.
button.place(relx=0.7, relheight=1, relwidth=0.3)

Попробуйте немного очистить свой код. Я попытался запустить его, и он разбился. Если это работает для вас, тогда это хорошо.

0 голосов
/ 01 мая 2020

если я правильно понимаю ваши намерения, то это должно помочь:

import Tkinter

root = Tkinter.Tk()

roll_again = ""

def workCallBack(choice):
   roll_again = choice

entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)

button = tk.Button(frame, text="Random Click!", font=40, command= lambda: workCallBack(entry.get()))
button.place(relx=0.7, relheight=1, relwidth=0.3)

root.mainloop() # should be at the bottom

, поскольку вы новичок в python, это нормально, но я настоятельно рекомендую привести в порядок код с помощью некоторых функций, чтобы уменьшить количество дублирующихся код, et c ..

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