GUI для управления фокусом и сеткой электронного луча - PullRequest
0 голосов
/ 13 марта 2020

Когда я пытаюсь изменить значение фокуса или сетки в пользовательском интерфейсе, я получаю сообщение об ошибке: ожидаемый целочисленный аргумент получил функцию (или что-то подобное, я не могу вспомнить точную формулировку, которую я получил в лаборатории). Таким образом, функция changevalue () не работает, потому что аргумент (например, gridlb) имеет тип «функция». Почему он имеет функцию типа и как я могу изменить его на целое число?

import visa
import ftdiwrapper as ft
import time
import tkinter as tk

root = tk.Tk()

index = 1
h = ft.FT_Open(index)

def init():
    ft.FT_Write(h, 0x51)
    ft.FT_Write(h, 0x5f)

def controlon():
    ft.FT_Write(h, b"\x20\x01")

def changevalue(param, valuelb, valuehb):
    ft.FT_Write(h, bytes([0x32, param, valuelb, valuehb]))


init()
controlon()

changevalue(0x00, 0x00, 5*10) #energy
changevalue(0x01, 0x00, 0xe4) #filament

focuslb0 = 0x00
focushb0 = 0x00
changevalue(0x03, focushb0, focuslb0) #focus
focuslb = focuslb0
focushb = focushb0

gridlb0 = 0x00
gridhb0 = 0x00
changevalue(0x02, gridlb0, gridhb0) # grid
gridlb = gridlb0
gridhb = gridhb0

def gridplus():
    global gridlb, gridhb
    if gridlb <= 240:
        gridlb += 15
    elif gridlb == 255:
        gridlb = 0
        gridhb += 1
    #print('Grid: ', gridlb, gridhb)
    changevalue(0x02, gridlb, gridhb)
    tk.Label(root, text = gridlb).grid(row=1, column=4)
    tk.Label(root, text = gridhb).grid(row=1, column=5)

def gridminus():
    global gridlb, gridhb
    if gridlb >= 15:
        gridlb -= 15
    elif gridlb == 0:
        gridlb = 255
        gridhb -= 1
    #print('Grid: ', gridlb, gridhb)
    changevalue(0x02, gridlb, gridhb)
    tk.Label(root, text = gridlb).grid(row=1, column=4)
    tk.Label(root, text = gridhb).grid(row=1, column=5)

def focusplus():
    global focuslb, focushb
    if focuslb <= 240:
        focushb += 15
    elif focuslb == 255:
        focuslb = 0
        focushb += 1
    #print('Focus: ', focuslb, focushb)
    changevalue(0x03, focuslb, focushb)
    tk.Label(root, text = focuslb).grid(row=0, column=4)
    tk.Label(root, text = focushb).grid(row=0, column=5)

def focusminus():
    global focuslb, focushb
    if focuslb >= 15:
        focuslb -= 15
    elif focuslb == 0:
        focuslb = 255
        focushb -= 1
    #print('Focus: ', focuslb, focushb)
    changevalue(0x03, focuslb, focushb)
    tk.Label(root, text = focuslb).grid(row=0, column=4)
    tk.Label(root, text = focushb).grid(row=0, column=5)

def gridhb():
    global focuslb, focushb
    gridhb = float(G_hb.get())
    changevalue(0x03, gridlb, gridhb)
    tk.Label(root, text = gridhb).grid(row=1, column=5)

def focushb():
    global focuslb, focushb
    focushb = float(F_hb.get())
    changevalue(0x03, focuslb, focushb)
    tk.Label(root, text = focushb).grid(row=0, column=5)


labelF = tk.Label(root, text = "Focus:").grid(row=0, column=0)

Button_Fplus = tk.Button(root, text = "+", command = focusplus)
Button_Fplus.grid(row=0, column=2)

Button_Fminus = tk.Button(root, text = "-", command = focusminus)
Button_Fminus.grid(row=0, column=3)


labelG = tk.Label(root, text = "Grid:")
labelG.grid(row=1, column=0)

Button_Gplus = tk.Button(root, text = "+", command = gridplus)
Button_Gplus.grid(row=1, column=2)

Button_Gminus = tk.Button(root, text = "-", command = gridminus)
Button_Gminus.grid(row=1, column=3)


F_hb = tk.Entry(root)
G_hb = tk.Entry(root)
F_hb.bind('<Return>', focushb)
G_hb.bind('<Return>', gridhb)
F_hb.grid(row=0, column=1)
G_hb.grid(row=1, column=1)


root.mainloop()

1 Ответ

1 голос
/ 13 марта 2020

Похоже, в вашем коде вы использовали gridhb как переменную и как функцию.

См. Раздел, начинающийся с

def gridhb():

Похоже, у вас возникнет та же проблема с помощью focushb:

def focushb():

Переименуйте их и ссылки на них (как здесь):

F_hb.bind('<Return>', focushb)
G_hb.bind('<Return>', gridhb)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...